package org.mbcorp.sar.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.mbcorp.sar.dao.TipoRequerimientoDAO;
import org.mbcorp.sar.model.TipoRequerimiento;
import org.mbcorp.sar.service.TipoRequerimientoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class TipoRequerimientoServiceImpl implements TipoRequerimientoService {

	private static final Logger LOGGER = LoggerFactory
			.getLogger(TipoRequerimientoServiceImpl.class);

	@Resource
	private TipoRequerimientoDAO tipoRequerimientoDAO;

	@Transactional
	@Override
	public TipoRequerimiento grabar(TipoRequerimiento created) {
		LOGGER.debug("Creando nuevo tipoReq con informacion: " + created);

		return tipoRequerimientoDAO.save(created);
	}

	@Override
	public TipoRequerimiento eliminar(Integer tipoRequerimientoId)
			throws RuntimeException {
		LOGGER.debug("Eliminando tipoReq con id: " +  tipoRequerimientoId);

		TipoRequerimiento eliminado =  tipoRequerimientoDAO.findOne(tipoRequerimientoId);

		if (eliminado == null) {
			LOGGER.debug("No se encontro tipoRequerimiento con id: " + tipoRequerimientoId);
			throw new RuntimeException();
		}

		tipoRequerimientoDAO.delete(eliminado);
		return eliminado;
	}

	@Transactional(readOnly = true)
	@Override
	public List<TipoRequerimiento> buscarTodos() {
		LOGGER.debug("Buscando todas las tipoReq");
		return tipoRequerimientoDAO.findAll();
	}

	@Transactional(readOnly = true)
	@Override
	public TipoRequerimiento buscarPorId(Integer id) {
		LOGGER.debug("Buscando tipoRequerimiento con id: " + id);
		return tipoRequerimientoDAO.findOne(id);
	}

	@Transactional
	@Override
	public TipoRequerimiento actualizar(TipoRequerimiento actualizado)
			throws RuntimeException {
		LOGGER.debug("Actualizando tipoRequerimiento con informacion: " + actualizado);

		TipoRequerimiento tipoRequerimiento = tipoRequerimientoDAO.findOne(actualizado.getId());

		if (tipoRequerimiento == null) {
			LOGGER.debug("No se encontro tipoReq con id: "
					+ actualizado.getId());
			throw new RuntimeException();
		}

		return tipoRequerimiento;
	}
}
